package com.iwhalecloud.bss.kite.cucc.service.attr.handler;

import java.util.List;
import java.util.stream.Collectors;

import com.iwhalecloud.bss.kite.cucc.service.util.ProdCateUtil;
import com.iwhalecloud.bss.kite.service.scene.attr.OperateInstAttrService;
import org.springframework.beans.factory.annotation.Autowired;

import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
import com.iwhalecloud.bss.kite.manager.api.IQuerySceneInstService;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttr;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttrValue;
import com.iwhalecloud.bss.kite.manager.inst.KiteInst;
import com.iwhalecloud.bss.kite.manager.inst.KiteProdInst;
import com.iwhalecloud.bss.kite.service.attr.AttrData;
import com.iwhalecloud.bss.kite.service.attr.handler.AbstractAttrHandler;

/**
 * 套内用量属性处理器
 */
public class QuantityMealAttrHandler extends AbstractAttrHandler<KiteInst, AttrData> {
    @Autowired
    private IQuerySceneInstService querySceneInstService;
    @Autowired
    OperateInstAttrService operateInstAttrService;
//    @Autowired
//    private OperateInstAttrService operateInstAttrService;
//    @Autowired
//    private IQuerySceneInstService querySceneInstService;
//    @Override
//    public void def(KiteAttr attr, KiteInst inst, AttrData data) {
//        List<KiteProdInst> kiteProdInstList = querySceneInstService.listProdInsts(data.getSceneInstId());
//        if(KiteListUtils.isNotEmpty(kiteProdInstList)){
//            kiteProdInstList.stream().forEach(kiteProdInst ->{
//                KiteAttr busiScene = kiteProdInst.getAttr("200001679");
//                KiteAttr apnType = kiteProdInst.getAttr("200003999");
//                if(!ObjectUtils.isEmpty(busiScene) && !ObjectUtils.isEmpty(apnType)){
//                    String busiSceneValue = busiScene.getValue();
//                    String apnTypeValue = apnType.getValue();
//                    if(KiteStringUtils.equals("100001821",busiSceneValue) && KiteStringUtils.equals("100007282",apnTypeValue)){
//                        List<AttrValue> values = AttrValueCache.get(attr.getAttrId());
//                        List<KiteAttrValue> attrValues = new ArrayList<>();
//                        values = values.stream().filter(attrValue -> attrValue.getAttrValue().compareTo("100007207")<0).collect(Collectors.toList());
//                        values.stream().forEach(attrValue ->{
//                            KiteAttrValue kiteAttrValue = new KiteAttrValue();
//                            kiteAttrValue.setAttrValue(attrValue.getAttrValue());
//                            kiteAttrValue.setAttrValueName(attrValue.getAttrValueName());
//                            attrValues.add(kiteAttrValue);
//                        });
//                        if(KiteListUtils.isNotEmpty(values)){
//                            attr.setAttrValues(attrValues);
//                            attr.setValue(attrValues.get(0).getAttrValue());
//                            attr.setValue(attrValues.get(0).getAttrValueName());
//                        }
//                    }
//                }
//            });
//        }
//    }

    @Override
    public void after(KiteAttr attr, KiteInst inst, AttrData data) {
        super.after(attr, inst, data);
        List<KiteProdInst> kiteProdInstList = querySceneInstService.listProdInsts(data.getSceneInstId());
        //产品NB通用连接-30MB-36月 新增资费计划套包的套内用量，只有30M选项
        if (kiteProdInstList.stream().anyMatch(kiteProdInst -> KiteStringUtils.equals(kiteProdInst.getSpecId(), ProdCateUtil.getMainMemberProdId(ProdCateUtil.GIFT_TYNB_PROD)))) {
            List<KiteAttrValue> attrValueList = attr.getAttrValues().stream().filter(attrValues -> KiteStringUtils.isEqual(attrValues.getAttrValue(), "100007200")).collect(Collectors.toList());
            attr.setAttrValues(attrValueList);
            attr.setDefaultValue("100007200");
            operateInstAttrService.setAttrValue(inst, attr.getFieldName(), "100007200", data.getSceneInstId(), null);
        }
    }
}
